#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>

int main(int argc, char *argv[])
{
    int field_num,field_count;
    MYSQL mysql;
    MYSQL_RES *res;
    MYSQL_ROW row;

    // 数据库名称
    const char *db = "student";
    const char *query = "select * from stu_info";

    // 初始化连接句柄
    mysql_init(&mysql);
    if(mysql_real_connect(&mysql, "localhost", "root", "Nj8845850*", db, 0, NULL, 0) == NULL)
    {
        printf("数据库连接错误！ %d: %s\n", mysql_errno(&mysql), mysql_error(&mysql));
        return 1;
    }
    printf("MySQL 连接成功！Connection id: %d\n", mysql.thread_id);

    //使用 mysql_real_query()查询数据库 
    if(mysql_real_query(&mysql, query, strlen(query))!=0)
    {
        printf("查询数据错误！ %d: %s\n", mysql_errno(&mysql), mysql_error(&mysql));
        mysql_close(&mysql);
        return 1;
    }

    // 使用 mysql_use_result() 初始化结果集
    if((res = mysql_use_result(&mysql)) == NULL)
    {
        printf("MySQL store result error! %d:%s\n",mysql_errno(&mysql),mysql_error(&mysql));
        mysql_close(&mysql);
        return 1;
    }
    // 逐行访问结果集中的记录
    for(field_count=0; field_count<=mysql_field_count(&mysql);field_count++)
    {
        if((row = mysql_fetch_row(res)) == NULL)
            break;

        for(field_num=0;field_num<=mysql_num_fields(res);field_num++)
        {
            printf("%s  ", row[field_num]);
        }
        printf("\n");
    }
    mysql_free_result(res);
    mysql_close(&mysql);

    return 0;
}
